/**
 * Copyright (c) 2008, Fabien Antoine
 * All rights reserved.
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE HAXE PROJECT CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE HAXE PROJECT CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 */

package fas.massload.events;

import fas.massload.file.ILoadFile;

import flash.events.Event;
import flash.events.ProgressEvent;

class MassLoaderEvent extends ProgressEvent
{	
	// ------ //
	// Events //
	// ------ //
	
	// Default events
	public static inline var INIT:String 	= Event.INIT;
	
	public static inline var COMPLETE:String	= Event.COMPLETE;
	
	public static inline var PROGRESS:String	= ProgressEvent.PROGRESS;
	
	public static inline var OPEN:String	= Event.OPEN;
	
	
	// Added events
	public static inline var COMPLETE_ALL:String	= "completeAll";
	
	public static inline var COMPLETE_ELEM:String	= "completeElem";
	
	public static inline var CLOSE:String		= "close";
	
	
	// ----------- //
	// Constructor //
	// ----------- //
	
	/**
	 * Constructor of MassLoaderEvent
	 * @param		sType			String			Event type
	 * @param		file			ILoadFile			File which is being loaded
	 * @param		bytesLoaded		Number			Bytes loaded from the file
	 * @param		bytesTotal		Number			Bytes total of the file
	 * @param		element		ILoadFile			Element sending event in a GLoadFile
	 */
	public function new( sType:String, ?file:ILoadFile, ?bytesLoaded:UInt=0, ?bytesTotal:UInt=0, ?element:ILoadFile )
	{		
		super( sType, false, false, bytesLoaded, bytesTotal );
		
		// Save the file
		this.file = file;
		this.element = element;
	}
	
	
	// --------- //
	// Accessors //
	// --------- //
	
	/**
	 * LoadFile emetting the event
	 */
	public var file( default, null ):ILoadFile;
	
	/**
	 * Element in a GLoadFile sending the event
	 */
	public var element( default, null ):ILoadFile;
}
